1362E - Johnny and Grandmaster - CodeForces Solution


data structures greedy implementation math number theory sortings two pointers *1900

Please click on ads to support us..

Python Code:

import sys
from heapq import *

input = lambda: sys.stdin.buffer.readline().decode().rstrip()



mod = 10**9 + 7

def solve():
    n ,p = list(map(int,input().split()))
    arr = list(map(int,input().split()))
    if p == 1 : 
        print(n%2) 
        return
    ans = 0 
    h= [ -i for i in arr] 

    heapify(h) 
    cnt = {}
    nonzero = [] 
    
    while h : 
        ai = -heappop(h)
        try:
            cnt[ai] += 1 
        except :
            cnt[ai] = 1
        heappush(nonzero,-ai) 
        while nonzero and cnt[-nonzero[0]]%2 == 0 : 
            cnt[-nonzero[0]] = 0 
            heappop(nonzero) 
            
        if cnt[ai] : 
            if cnt[ai] == p : 
                cnt[ai] = 0 
                heappush(h,-(ai+1)) 
    f = False

    for i in sorted(cnt.keys(),reverse=1) :
        if cnt[i] :
            if f :
                ans -= cnt[i]*pow(p,i,mod)
            else:
                f = True
                ans += pow(p,i,mod)
            ans %= mod 
    print(ans)
 
for t in range(int(input())):
        solve()


Comments

Submit
0 Comments
More Questions

432D - Prefixes and Suffixes
486A - Calculating Function
1373B - 01 Game
1187A - Stickers and Toys
313B - Ilya and Queries
579A - Raising Bacteria
723A - The New Year Meeting Friends
302A - Eugeny and Array
1638B - Odd Swap Sort
1370C - Number Game
1206B - Make Product Equal One
131A - cAPS lOCK
1635A - Min Or Sum
474A - Keyboard
1343A - Candies
1343C - Alternating Subsequence
1325A - EhAb AnD gCd
746A - Compote
318A - Even Odds
550B - Preparing Olympiad
939B - Hamster Farm
732A - Buy a Shovel
1220C - Substring Game in the Lesson
452A - Eevee
1647B - Madoka and the Elegant Gift
1408A - Circle Coloring
766B - Mahmoud and a Triangle
1618C - Paint the Array
469A - I Wanna Be the Guy
1294A - Collecting Coins